package com.neusoft.SPNursingHome.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.neusoft.SPNursingHome.po.ClientCheckInDto;
import com.neusoft.SPNursingHome.po.Client;
import com.neusoft.SPNursingHome.po.ClientWithCareLevel;
import com.neusoft.SPNursingHome.po.ResponseBean;

import java.util.List;
import java.util.Map;

public interface ClientService {
    //获取客户列表
    ResponseBean<IPage<Client>> findClientsByCriteria
            (long pageNum, long pageSize,  Map<String, Object> query);
    // 更新单个客户的状态 (删除或恢复)
    ResponseBean<Void> updateClientStatus(Integer clientId, Integer status);
    //批量删除
    ResponseBean<Void> updateClientStatusBatch(List<Integer> clientIds, Integer status);
    // 获取单个客户的详细信息
    ResponseBean<ClientCheckInDto> getClientDetailsForEdit(Integer clientId);
    //更新客户信息
    ResponseBean<Void> updateClientInfo(ClientCheckInDto dto);
    //健康管家客户信息
    ResponseBean<IPage<Client>> getMyManagedClients(long pageNum, long pageSize, Integer adId, String clientName);
    //导出客户信息
    ResponseBean<byte[]> exportAllClients();
    //客户房间信息
    ResponseBean<List<Client>> getClientsByRoom(String roomId);

    ResponseBean<List<Client>> listAll();
    ResponseBean<Client> getById(Integer id);
    ResponseBean<Void> create(Client client);
    ResponseBean<Void> update(Client client);
    ResponseBean<Void> delete(Integer id);
    ResponseBean<IPage<Client>> listUnassignedCareClients(String name, long page, long size);

    // 设置客户护理级别
    ResponseBean<Integer> setCareLevelId(Integer clientId, Integer careLevelId);

    // 移除客户护理级别
    ResponseBean<Integer> deleteCareLevelId(Integer clientId);

//    // 根据客户姓名查询护理老人列表
//    public ResponseBean<List<ClientWithCareLevel>> searchByNameAndCareType(String clientName, String careType);

    // 根据客户姓名查询护理老人列表
    public ResponseBean<IPage<ClientWithCareLevel>> searchByNameAndCareType(String clientName, String careType, long page, long size);

    // 根据客户姓名查询护理老人列表
    public ResponseBean<IPage<ClientWithCareLevel>> searchByNameAndCareTypeAndAdId(String clientName, String careType, Integer adId, long page, long size);


}
